#ifndef PARAFLUIDSPHFORCE_H
#define PARAFLUIDSPHFORCE_H

#include "parafluidmultihashmap.h"
#include "parafluidsph.h"

namespace ParaFluid
{

	class ForceUpdater
		: public AtomVoxelizer::ReadWriteVisitor
	{
		
	public:
		
		virtual ~ForceUpdater();
		
		ForceUpdater();
		
		void visit(Atom & value);
		
		void updateForces(SPH & sph);
		
		void updateForcesParallel(SPH & sph, int indexFirst, int indexLast);
		
	private:
		
		SPH * _SPH;
		
		ForceUpdater(const ForceUpdater & other);
		
		ForceUpdater & operator= (const ForceUpdater & rhs);
		
	};
	
}

#endif
